package com.rpss.fichamento.dao;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

/**
 * <pre>
 * Repositorio para carros que utiliza o SQLite internamente
 * 
 * Para visualizar o banco pelo adb shell:
 * 
 * &gt;&gt; sqlite3 /data/data/com.rpss.contabilidadepessoal.banco/databases/contabilidade_pessoal
 * 
 * &gt;&gt; Mais info dos comandos em: http://www.sqlite.org/sqlite.html
 * 
 * &gt;&gt; .exit para sair
 * 
 * </pre>
 * 
 * @author Regis
 * 
 */
public class RepositorioFichamento {

	// Script para fazer drop na tabela
	private static final String[] SCRIPT_DATABASE_DELETE = new String[] {
			"DROP TABLE IF EXISTS fichamento;", "DROP TABLE IF EXISTS obra;" };

	// Cria a tabela com o "_id" sequencial
	private static final String[] SCRIPT_DATABASE_CREATE = new String[] {
			"create table obra ( _id integer primary key autoincrement, texto text, palavraschave text);",
			"insert into obra(texto, palavraschave) values('Obra1', 'obra1');",
			"insert into obra(texto, palavraschave) values('Obra2', 'obra2');",
			"insert into obra(texto, palavraschave) values('Obra3', 'obra3');",
			"create table fichamento ( _id integer primary key autoincrement, texto text, palavraschave text, id_obra integer, FOREIGN KEY(id_obra) REFERENCES obra(_id));",
			"insert into fichamento(texto, id_obra) values('fichamento1', 1);",
			"insert into fichamento(texto, id_obra) values('fichamento2', 1);",
			"insert into fichamento(texto, id_obra) values('fichamento3', 1);" };

	// Nome do banco
	private static final String NOME_BANCO = "fichamento";

	// Controle de versao
	private static final int VERSAO_BANCO = 1;

	private static SQLiteDatabase db;

	// Classe utilitaria para abrir, criar, e atualizar o banco de dados
	private static SQLiteHelper dbHelper;

	// Cria o banco de dados com um script SQL
	public RepositorioFichamento(Context ctx) {
		// Criar utilizando um script SQL
		dbHelper = new SQLiteHelper(ctx, RepositorioFichamento.NOME_BANCO,
				RepositorioFichamento.VERSAO_BANCO,
				RepositorioFichamento.SCRIPT_DATABASE_CREATE,
				RepositorioFichamento.SCRIPT_DATABASE_DELETE);

		// abre o banco no modo escrita para poder alterar tambem
		db = dbHelper.getWritableDatabase();
	}

	// Fecha o banco
	public static void fechar() {
		// super.fechar();

		if (db != null) {
			db.close();
		}

		if (dbHelper != null) {
			dbHelper.close();
		}
	}

	public static SQLiteDatabase getDb() {
		return db;
	}
}
